<?php
/**
 * Created by PhpStorm.
 * @author 清凉Tea <973110519@qq.com>
 * Date: 2017/8/6
 * Time: 21:17
 */

namespace app\api\exception;

use think\exception\Handle;
use think\Log;
use think\Request;

class ExceptionHandler extends Handle
{
    private $status;
    private $code;
    private $msg;
    private $errorCode;

    public function render(\Exception $e)
    {
            if($e instanceof BaseException){
                //如果是自定义的异常
                $this->status = $e->status;
                $this->code = $e->code;
                $this->msg = $e->msg;
                $this->errorCode = $e->errorCode;
            }else{
                if(config('app_debug')){
                    return parent::render($e);
                }else{
                    $this->status = 0;
                    $this->code = 500;
                    $this->msg = '服务器内部错误!';
                    $this->errorCode = 999;
                    $this->renderErrorLog($e);
                }
            }
            $result =[
                'status' => $this->status,
                'msg' => $this->msg,
                'error_code' => $this->errorCode,
                'request_url' => Request::instance()->url()
            ];
            return json($result,$this->code);
    }


    private function renderErrorLog(\Exception $e)
    {
        Log::init([
            'type' => 'File',
            'path' => LOG_PATH,
            'level' => ['error'],
        ]);
        Log::record($e->getMessage(),'error');
    }
}